home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / bbs / inf121d.zip / dev.doc < prev    next >
Text File  |  1996-11-02  |  28KB  |  721 lines

  1.  
  2.  
  3.       ______              ___________________              ______
  4.       >     |____________| InfoMail/386 1.20 |____________|     <
  5.       ~~||~~|  Centurion |~~~~~~~~~~~~~~~~~~~| 2:2502/666 |~~||~~
  6.         ||   ~~~~~~~~~~~~                     ~~~~~~~~~~~~   ||
  7.         ||                                                   ||
  8.         ||                                                   ||
  9.         ||                                                   ||
  10.         ||                     CENTURION                     ||
  11.         ||                                                   ||
  12.         ||                                                   ||
  13.         ||                        -*-                        ||
  14.         ||                                                   ||
  15.         ||                                                   ||
  16.         ||                 InfoMail/386 1.20                 ||
  17.         ||                                                   ||
  18.         ||       A Document Server for Fidonet Systems       ||
  19.         ||                                                   ||
  20.         ||          Copyright (C) Damian Walker 1996         ||
  21.         ||                                                   ||
  22.         ||                                                   ||
  23.         ||                        -*-                        ||
  24.         ||                                                   ||
  25.         ||                                                   ||
  26.         ||                 DEVELOPER'S GUIDE                 ||
  27.         ||                                                   ||
  28.         ||                                                   ||
  29.         ||                        _____                      ||
  30.         ||                       (____()                     ||
  31.         ||                        /   /                      ||
  32.         ||                       /   /                       ||
  33.         ||                      (____()                      ||
  34.         ||                      _______                      ||
  35.         ||                     (_)|||(_)                     ||
  36.         ||                       |||||                       ||
  37.         ||                       |||||                       ||
  38.         ||                       |||||                       ||
  39.         ||                       |||||                       ||
  40.         ||                       |||||                       ||
  41.         ||                       |||||                       ||
  42.         ||                       |||||                       ||
  43.         ||                      /~~~~~\                      ||
  44.         ||                      ~~~~~~~                      ||
  45.         ||                                                   ||
  46.         ||                                                   ||
  47.         ||                                                   ||
  48.         ||                                                   ||
  49.         ||   ____________                     ____________   ||
  50.       __||__|  Copyright |___________________|    1996    |__||__
  51.       >     |~~~~~~~~~~~~| (C) Damian Walker |~~~~~~~~~~~~|     <
  52.       ~~~~~~              ~~~~~~~~~~~~~~~~~~~              ~~~~~~
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. 1.      INTRODUCTION
  64.  
  65.         The developer's guide has been written with other software
  66.         authors in mind; it is primarily designed for people who want to
  67.         write programs to interface with InfoMail/386 1.20.
  68.  
  69.         It is laid out in the form of a reference guide, with a section
  70.         for the configuration file, and a section for the document list
  71.         files.
  72.  
  73.         Information relevant to users can be found in the User and
  74.         Reference Guides (USER.DOC and REF.DOC), a full table of
  75.         contents for this and the other manuals is in the file
  76.         CONTENTS.DOC, and a full index is given as the file INDEX.DOC.
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. Introduction                                                        D- 2
  121.  
  122.  
  123. 2.      THE CONFIGURATION FILE
  124.  
  125.         There is only one file for the general configuration, this being
  126.         INFOMAIL.CFG.  The file's general format is as follows:
  127.  
  128.         ┌───────┬───────────────────────────────┬───────┬───────┬──────┐
  129.         │HEADER │CONFIGURATION                  │AKA REC│AKA REC│...   │
  130.         └───────┴───────────────────────────────┴───────┴───────┴──────┘
  131.  
  132.         The header is available for verification of the file.  It is
  133.         advisable that the header be read and verified before
  134.         progressing to read the rest of the file; if the header is
  135.         invalid then the rest of the file is likely to contain nonsense.
  136.         The header section is 8 bytes long, and contains the following
  137.         characters:
  138.  
  139.         ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
  140.         │   I   │   N   │   F   │   1   │   2   │   0   │   S   │ <NUL> │
  141.         │  73   │  78   │  70   │  49   │  50   │  48   │  83   │   0   │
  142.         │  49h  │  4Eh  │  46h  │  31h  │  32h  │  30h  │  53h  │  00h  │
  143.         └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
  144.  
  145.         The configuration section has the following structure, presented
  146.         here as a language-independent table:
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180. The Configuration File                                              D- 3
  181.  
  182.  
  183.         ┌──────────────────────────────────────────────────────────────┐
  184.         │MAIN CONFIGURATION TABLE                                      │
  185.         ├───────┬───────┬──────────────────────────────────────────────┤
  186.         │NETMAIL│char/64│netmail directory                             │
  187.         │LOGFILE│char/64│path and name of log file                     │
  188.         │FLAGS  │int/2  │various flags:                                │
  189.         │       │       │bit 0  active                                 │
  190.         │       │       │bit 1  kill inbound requests                  │
  191.         │       │       │bit 2  kill inbound updates                   │
  192.         │       │       │bit 3  kill inbound searches                  │
  193.         │       │       │bit 4  kill outbound responses                │
  194.         │REQUEST│char/36│user name for requests                        │
  195.         │UPDATE │char/36│user name for updates                         │
  196.         │SEARCH │char/36│user name for searches                        │
  197.         │HEADER │char/64│path and name of global header                │
  198.         │FOOTER │char/64│path and name of global footer                │
  199.         │DOCLIST│char/64│path and name of doc list template            │
  200.         │NOFILE │char/64│file name of file error template              │
  201.         │INACTIV│char/64│file name of 'inactive' template              │
  202.         │ACCEPT │char/64│name of update accepted template              │
  203.         │REJECT │char/64│name of 'rejected' template                   │
  204.         │RESULTS│char/64│name of search results template               │
  205.         │SPLIT  │int/2  │maximum message size                          │
  206.         ├───────┴───────┴──────────────────────────────────────────────┤
  207.         │AKA RECORD                                                    │
  208.         ├───────┬───────┬──────────────────────────────────────────────┤
  209.         │ZONE   │int/2  │fidonet zone                                  │
  210.         │NET    │int/2  │net number                                    │
  211.         │NODE   │int/2  │node number                                   │
  212.         │POINT  │int/2  │point address                                 │
  213.         └───────┴───────┴──────────────────────────────────────────────┘
  214.  
  215.         The characters before each '/' refer to the type, and the number
  216.         after it refers to the size in bytes.  Thus int/2 is a 2-byte
  217.         integer, and char/64 is a 64-byte character string. Since
  218.         InfoMail was written in C, all the character variables (i.e. all
  219.         the char/36s and char/64s) are null terminated.  All the int/2s
  220.         are in low-byte/high-byte form, as is the normal Intel practice.
  221.  
  222.         These fields are all verified at the time they are entered in
  223.         the configuration editor.  This means that if you are planning
  224.         to write to the configuration file yourself, you need to make
  225.         sure that you make the same checks as InfoMail itself.  These
  226.         checks are described in the following sections.
  227.  
  228. 2.1.    The NETMAIL field
  229.  
  230.         This field is a 64-character ASCIIZ string, containing the
  231.         netmail directory.  InfoMail requires that there is a
  232.         terminating backslash on this field, unless it is a simple drive
  233.         letter (in which case the colon is required).  Failure to add
  234.         this backslash to the NETMAIL field means that InfoMail will
  235.         fail to find netmail messages, possibly causing an error:
  236.  
  237.  
  238.  
  239.  
  240. The Configuration File                                              D- 4
  241.  
  242.  
  243.                 ! No netmails to read
  244.  
  245.         InfoMail itself converts the name to upper case, and converts
  246.         any Unix-style slashes (/) entered by the user into DOS
  247.         backslashes (\).
  248.  
  249.         InfoMail will run happily with either slash in the netmail
  250.         field, and will also accept pathnames in upper or lower case,
  251.         but if the NETMAIL field contains lower case letters or a Unix
  252.         slash, this will be altered next time the user edits the NETMAIL
  253.         field in the configuration editor.  Thus it may be aesthetically
  254.         more pleasing to format the names as InfoMail does, before
  255.         writing them.
  256.  
  257. 2.2.    The LOGFILE field
  258.  
  259.         As mentioned in the user guide, this field is mandatory.  A full
  260.         valid path and filename must be written to this field.  If a
  261.         valid DOS filename is not present, InfoMail will refuse to run.
  262.  
  263.         Filename formatting is as per the netmail field.  InfoMail
  264.         converts Unix slashes to DOS backslashes and converts the
  265.         filename to upper case when the field is edited in the
  266.         configuration editor, but it will run with lower case filenames
  267.         and Unix slashes.
  268.  
  269. 2.3.    The FLAGS field
  270.  
  271.         This is a compound binary field, containing five flags and room
  272.         for eleven more.  The eleven unused flags may currently be used
  273.         by third-party utilities, but as InfoMail gets updated and
  274.         expanded some of these may be used by the program itself.
  275.  
  276.         It is recommended that third-party utilities implementing their
  277.         own flags in the INFOMAIL.CFG file restrict themselves to using
  278.         bits 12 to 15 of the FLAGS field.  Bear in mind however, that
  279.         use of your utility at a user's installation may preclude the
  280.         use of another utility which uses the same flag field, so unless
  281.         there is very little data to be stored by your utility, it is
  282.         recommended that you maintain your own configuration file for
  283.         any values it may need over and above those already used by
  284.         InfoMail.
  285.  
  286.         Bit 0 of this field is the active flag.  Setting it to 1 (the
  287.         normal value) indicates that the installation is active.  
  288.  
  289.         Bit 1 of this field is the Kill Inbound Requests flag, 2
  290.         indicates 'Yes' and 0 indicates 'No'.
  291.  
  292.         Bit 2 of this field is the Kill Inbound Updates flag, 4 meaning
  293.         'Yes' and 0 meaning 'No'.
  294.  
  295.         Bit 3 of this field is the Kill Inbound Searches flag, 8 meaning
  296.         'Yes' and 0 meaning 'No'.
  297.  
  298.  
  299.  
  300. The Configuration File                                              D- 5
  301.  
  302.  
  303.         Bit 4 of this field is the Kill Outbound Responses flag, 16
  304.         meaning 'Yes' and 0 meaning 'No'.
  305.  
  306.         Since these are binary 2-state fields, and all combinations are
  307.         valid, no validation is required before writing their value.
  308.         See the reference guide for further details about their effect
  309.         upon InfoMail's behaviour.
  310.  
  311. 2.4.    The REQUEST field
  312.  
  313.         This is a simple ASCIIZ character string showing the name which,
  314.         when found in the 'To:' field of a message, tells InfoMail that
  315.         the message is a document request.  No validation is necessary,
  316.         other than checks for string length and zero termination in
  317.         languages which do not use fixed length/zero terminated strings.
  318.  
  319.         InfoMail checks for this name in inbound messages before
  320.         checking for the update and search names (see next 2 sections),
  321.         so document requests are not affected by having identical values
  322.         in the REQUEST field and the UPDATE (and/or SEARCH) fields.
  323.  
  324. 2.5.    The UPDATE field
  325.  
  326.         This is a simple ASCIIZ character string showing the name which,
  327.         when found in the 'To:' field of a message, tells InfoMail that
  328.         the message is a document update.
  329.  
  330.         Apart from checks for string length and zero termination, it may
  331.         be useful to verify that the value of this field is not
  332.         identical to that of the REQUEST field.  Identical values in
  333.         these fields would not cause problems when running InfoMail,
  334.         other than preventing document updates from being made.
  335.  
  336. 2.6.    The SEARCH field
  337.  
  338.         This is a simple ASCIIZ character string showing the name which,
  339.         when found in the 'To:' field of a message, tells InfoMail that
  340.         the message is a document search request.
  341.  
  342.         Apart from checks for string length and zero termination, it may
  343.         be useful to verify that the value of this field is not
  344.         identical to that of the REQUEST or UKDATE fields.  Identical
  345.         values in these fields would not cause problems when running
  346.         InfoMail, other than preventing document searches from being
  347.         requested.
  348.  
  349. 2.7.    The HEADER field
  350.  
  351.         This is a simple ASCIIZ string containing a filename.  The
  352.         formatting of this filename are as for the LOGFILE field.  If
  353.         the filename is invalid, InfoMail includes no header in outgoing
  354.         messages.
  355.  
  356.  
  357.  
  358.  
  359.  
  360. The Configuration File                                              D- 6
  361.  
  362.  
  363. 2.8.    The FOOTER field
  364.  
  365.         This is a simple ASCIIZ string containing a filename.  The
  366.         formatting of this filename is as for the LOGFILE field.  If the
  367.         filename is invalid, InfoMail includes no footer in outgoing
  368.         messages.
  369.  
  370. 2.9.    The DOCLIST field
  371.  
  372.         This is a simple ASCIIZ string containing a filename.  The
  373.         formatting of this filename is as for the LOGFILE field.  If the
  374.         filename is invalid, the standard format is used for document
  375.         lists.
  376.  
  377. 2.10.   The NOFILE field
  378.  
  379.         This is a simple ASCIIZ string containing a filename.  The
  380.         formatting of this filename is as for the LOGFILE field.  If the
  381.         filename is invalid, the standard format is used for file
  382.         errors.
  383.  
  384. 2.11.   The INACTIV field
  385.  
  386.         This is a simple ASCIIZ string containing a filename.  The
  387.         formatting of this filename is as for the LOGFILE field.  If the
  388.         filename is invalid, the standard format is used for document
  389.         inactive errors.
  390.  
  391. 2.12.   The ACCEPT field
  392.  
  393.         This is a simple ASCIIZ string containing a filename.  The
  394.         formatting of this filename is as for the LOGFILE field.  If the
  395.         filename is invalid, the standard format is used for update
  396.         accepted responses.
  397.  
  398. 2.13.   The REJECT field
  399.  
  400.         This is a simple ASCIIZ string containing a filename.  The
  401.         formatting of this filename is as for the LOGFILE field.  If the
  402.         filename is invalid, the standard format is used for reject
  403.         messages.
  404.  
  405. 2.14.   The RESULTS field
  406.  
  407.         This is a simple ASCIIZ string containing a filename.  The
  408.         formatting of this filename is as for the LOGFILE field.  If the
  409.         filename is invalid, the standard format is used for search
  410.         results.
  411.  
  412. 2.15.   The SPLIT field
  413.  
  414.         This is a standard, unsigned 2-byte integer.  All possible
  415.         values of this field are valid, so no checking is necessary.
  416.  
  417.  
  418.  
  419.  
  420. The Configuration File                                              D- 7
  421.  
  422.  
  423. 2.16.   The AKA LIST records
  424.  
  425.         InfoMail does not limit the number of these records which can be
  426.         added to the end of a configuration file, so the number which
  427.         might exist is limited only by disk space.
  428.  
  429.         It does not check for duplicate values on loading these records,
  430.         so if duplicate addresses are created this will have a slight
  431.         impact on InfoMail's running speed.  It is best to check for
  432.         duplicate values in your own program, especially when adding
  433.         addresses yourself which may already be present.
  434.  
  435.         The list is not sorted in any way, so checks for addresses must
  436.         consist of a complete search of all addresses present.  InfoMail
  437.         does not record the number of addresses present, so the file
  438.         size must be recorded or an EOF check made to ensure you don't
  439.         read past the end of the file.
  440.  
  441.         All integers are 2-byte signed values, as per the normal Fidonet
  442.         standard.  All addresses are full 4D-addresses, with a point
  443.         value of zero for full node addresses.
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480. The Configuration File                                              D- 8
  481.  
  482.  
  483. 3.      THE DOCUMENT LIST FILES
  484.  
  485.         There are two files used to store the document list,
  486.         INFOMAIL.DAT and INFOMAIL.NDX.  INFOMAIL.DAT is the main data
  487.         file, and INFOMAIL.NDX is the index file.  The files have the
  488.         following overall format:
  489.  
  490.                         ┌───────┬───────────────┬───────────────┬──────┐
  491.         INFOMAIL.DAT    │HEADER │DOCUMENT       │DOCUMENT       │...   │
  492.                         └───────┴───────────────┴───────────────┴──────┘
  493.  
  494.                         ┌───────┬───────────────┬───────────────┬──────┐
  495.         INFOMAIL.NDX    │HEADER │INDEX RECORD   │INDEX RECORD   │...   │
  496.                         └───────┴───────────────┴───────────────┴──────┘
  497.  
  498.         The header of both files is used to verify their validity, in
  499.         case of corruption or copying of other files over the valid
  500.         document list.  The HEADER section for INFOMAIL.DAT contains the
  501.         following characters:
  502.  
  503.         ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
  504.         │   I   │   N   │   F   │   1   │   2   │   0   │   D   │ <NUL> │
  505.         │  73   │  78   │  70   │  49   │  50   │  48   │  68   │   0   │
  506.         │  49h  │  4Eh  │  46h  │  31h  │  32h  │  30h  │  44h  │  00h  │
  507.         └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
  508.  
  509.         and the header section of INFOMAIL.NDX contains the following:
  510.  
  511.         ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┐
  512.         │   I   │   N   │   F   │   1   │   2   │   0   │   X   │ <NUL> │
  513.         │  73   │  78   │  70   │  49   │  50   │  48   │  88   │   0   │
  514.         │  49h  │  4Eh  │  46h  │  31h  │  32h  │  30h  │  58h  │  00h  │
  515.         └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
  516.  
  517.         If any other sequence of characters forms the first eight bytes
  518.         of either file, it is recommended that you close the files
  519.         immediately and terminate the program (or run it without the use
  520.         of these files, where possible).  Invalid values in these
  521.         headers mean that the format of the files may be invalid and may
  522.         confuse your program.
  523.  
  524.         The format of a document record in the file INFOMAIL.DAT is
  525.         represented in language-independent form in the following table:
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540. The Document List Files                                             D- 9
  541.  
  542.  
  543.         ┌───────┬───────┬──────────────────────────────────────────────┐
  544.         │DELETED│int/2  │deleted flag                                  │
  545.         │DOCNAME│char/18│document name/tag                             │
  546.         │FLAGS  │int/2  │general document flags                        │
  547.         │       │       │bit 0  macros                                 │
  548.         │       │       │bit 1  listed                                 │
  549.         │       │       │bit 2  smart routing (unused in this version) │
  550.         │       │       │bit 3  active                                 │
  551.         │SUBJECT│int/72 │subject line                                  │
  552.         │ATTR   │int/2  │attributes for outgoing messages              │
  553.         │REQUEST│char/9 │request password                              │
  554.         │UPDATE │char/9 │update password                               │
  555.         │FILE   │char/64│primary document text file                    │
  556.         │SECFILE│char/64│secondary document text file                  │
  557.         │COUNTER│int/2  │document access counter                       │
  558.         └───────┴───────┴──────────────────────────────────────────────┘
  559.  
  560.         The format of the index file INFOMAIL.NDX is as follows:
  561.  
  562.         ┌───────┬───────┬──────────────────────────────────────────────┐
  563.         │DOCNAME│char/18│document name                                 │
  564.         │FILEPOS│int/4  │record position in list file                  │
  565.         └───────┴───────┴──────────────────────────────────────────────┘
  566.  
  567.         As with the configuration file, the type description is
  568.         'type/size', size being in bytes, and all char values are
  569.         null-terminated ASCIIZ strings, and all verifications of these
  570.         fields are made while in the document list editor, so developers
  571.         writing to these files will have to perform the appropriate
  572.         verifications themselves, according to the information in the
  573.         following subsections.
  574.  
  575. 3.1.    The DELETED field
  576.  
  577.         This field indicates that the document record has been marked as
  578.         deleted.  Currently any value in this field other than zero is
  579.         taken as 'deleted'.
  580.  
  581.         In normal usage, this field should never be set when InfoMail is
  582.         not running.  The document list editor sets this field to 1 when
  583.         records are deleted by the user, and removes all such records
  584.         when the user leaves the editor.  Also, the field is briefly
  585.         used by the netmail scan to mark records NOT matching search
  586.         criteria during a document search; after the search results are
  587.         sent to the user, all records are marked as undeleted (i.e. a 0
  588.         is stored in this field).
  589.  
  590.         Other third-party utilities may make use of the field in a
  591.         similar fashion, as long as all records are marked as NOT
  592.         deleted (i.e. DELETED = 0) before InfoMail could possibly be
  593.         run.
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600. The Document List Files                                             D-10
  601.  
  602.  
  603. 3.2.    The DOCNAME field
  604.  
  605.         This field, in both the index file and the document list file,
  606.         contains the document name.  Taking InfoMail as it stands, the
  607.         name in the document list file itself seems superfluous, but it
  608.         may be that third-party utilities create indexes on other fields
  609.         for their own use, and thus the document name would be required
  610.         in the main file.
  611.  
  612.         Although this field is 18 characters, allowing 17-character
  613.         document names, no document name should exceed 16 characters
  614.         (plus the terminating NULL).  The reason for the extra character
  615.         in the file is that the DJGPP compiler word-aligns fields.
  616.  
  617. 3.3.    The FLAGS field
  618.  
  619.         This field contains various Yes/No type information about each
  620.         individual document.  Developers implementing their own document
  621.         flags in this field should restrict themselves to using bits 12
  622.         to 15, as InfoMail may make use of flags 4 to 11 in future
  623.         releases.
  624.  
  625.         Bit 0 is the Macros flag, a value of 1 meaning 'Yes' and a value
  626.         of 0 meaning 'No'.
  627.  
  628.         Bit 1 is the Listed flag, a value of 2 meaning 'Yes' and a value
  629.         of 0 meaning 'No'.
  630.  
  631.         Bit 2 is the Smart Routing flag, which is currently unused.
  632.         This flag should be left alone by third-party programs, as it
  633.         may be used in future, even for the current release of InfoMail
  634.         (by a secondary add-on program).
  635.  
  636.         Bit 3 is the Active flag, a value of 8 meaning 'Yes' and a value
  637.         of 0 meaning 'No'.
  638.  
  639.         See the reference guide for more information about the effect of
  640.         these flags on the behaviour of the InfoMail program.
  641.  
  642. 3.4.    The SUBJECT field
  643.  
  644.         This is a simple ASCIIZ string containing the subject line for
  645.         outgoing messages.  It is a freeform text field.  Although it is
  646.         72 characters long, only 64 characters should be used (creating
  647.         a maximum subject length of 63 characters).  Longer subject
  648.         lines will cause InfoMail to crash.
  649.  
  650. 3.5.    The ATTR field
  651.  
  652.         This is the attributes field which will be stamped on outgoing
  653.         primary messages for this document.  Refer to the document FTS-1
  654.         for details on the exact meaning of these flags.  Although the
  655.         Pvt and Local flags do not appear in the document editor, they
  656.         will always be set in the document list file.
  657.  
  658.  
  659.  
  660. The Document List Files                                             D-11
  661.  
  662.  
  663.         If your program modifies the values of attributes not directly
  664.         supported by the document list editor, InfoMail will not change
  665.         these.  It is therefore recommended that you leave the Pvt and
  666.         Local flags set.
  667.  
  668. 3.6.    The REQUEST field
  669.  
  670.         This is a request password, and is a freeform ASCIIZ string.
  671.         InfoMail does not do any case conversion of this value in the
  672.         file, even though the password comparison is case insensitive.
  673.  
  674. 3.7.    The UPDATE field
  675.  
  676.         This is an update password, and is a freeform ASCIIZ string.
  677.         InfoMail does not do any case conversion of this value in the
  678.         file, even though the password comparison is case insensitive.
  679.  
  680. 3.8.    The FILE field
  681.  
  682.         This filename field is an ASCIIZ string, its contents following
  683.         normal DOS filename conventions.  Exact details of formatting
  684.         are as for the LOGFILE field in the configuration file, see
  685.         section 2.2 for these.
  686.  
  687. 3.9.    The SECFILE field
  688.  
  689.         The SECFILE field has the same format and behaviour as the FILE
  690.         field described in section 3.8.
  691.  
  692. 3.10.   The COUNTER field
  693.  
  694.         This is a 2-byte integer, unsigned.  All possible values are
  695.         valid, so no checking is necessary.
  696.  
  697. 3.11.   Details of the Index File
  698.  
  699.         The index file is sorted in alphabetical/ASCII order, although
  700.         the sorting is case insensitive, i.e. the records Acorn, apple,
  701.         Banana would appear in that order.
  702.  
  703.         The FILEPOS field is a signed integer pointing to the position
  704.         in INFOMAIL.DAT where a particular document lies, that document
  705.         being identified in the index file by document name (DOCNAME).
  706.         The DOCNAME field in each file should match exactly.  The first
  707.         byte of the file is position 0.
  708.  
  709.         If a third-party application leaves the index in a mess
  710.         (unsorted, or sorted in a case-sensitive order), then InfoMail
  711.         will exhibit strange behaviour, often failing to find documents
  712.         which are present.  If this problem occurs during development,
  713.         you should load the document list editor and quit it immediately
  714.         (since the final document pack in the editor re-indexes the
  715.         file).  The INFOMAIL.DAT file is completely unsorted.
  716.  
  717.  
  718.  
  719.  
  720. The Document List Files                                             D-12
  721.